package com.cw.jeeyt.service.intf.api;

import java.util.List;

import com.cw.jeeyt.common.Order;
import com.cw.jeeyt.service.bo.api.ApiFacadeObjEnumBo;
import com.cw.lang.mybatis.dto.PageInfo;

/**
 * 枚举对象信息表业务接口
  * @author chenw
 * @version 1.0.0
 */
public interface ApiFacadeObjEnumService {
    /**
     * 查询所有枚举对象信息表列表信息
     */
    List<ApiFacadeObjEnumBo> queryApiFacadeObjEnumList() throws Exception;

    /**
     * 删除枚举对象信息表
     *
     * @param apiFacadeObjEnumBo
     */
    void delete(ApiFacadeObjEnumBo apiFacadeObjEnumBo) throws Exception;

    /**
     * 更新枚举对象信息表
     *
     * @param apiFacadeObjEnumBo
     */
    void update(ApiFacadeObjEnumBo apiFacadeObjEnumBo) throws Exception;

    /**
     * 更新枚举对象信息表不为空的字段
     *
     * @param apiFacadeObjEnumBo
     */
    void updateSelective(ApiFacadeObjEnumBo apiFacadeObjEnumBo) throws Exception;

    /**
     * 根据主键查询枚举对象信息表
     *
     * @return
     */
    ApiFacadeObjEnumBo getApiFacadeObjEnumById(Long id) throws Exception;

    /**
     * 新增枚举对象信息表
     *
     * @param apiFacadeObjEnumBo
     * @return
     */
    Long insert(ApiFacadeObjEnumBo apiFacadeObjEnumBo) throws Exception;

    /**
     * 新增枚举对象信息表不为空的字段
     *
     * @param apiFacadeObjEnumBo
     * @return
     */
    Integer insertSelective(ApiFacadeObjEnumBo apiFacadeObjEnumBo) throws Exception;

    /**
     * 分页查询枚举对象信息表
     *
     * @param apiFacadeObjEnumBo
     * @param pageNo
     * @param pageSize
     * @return
     * @throws Exception
     */
    PageInfo<ApiFacadeObjEnumBo> queryByPage(ApiFacadeObjEnumBo apiFacadeObjEnumBo, Integer pageNo, Integer pageSize,
        Order order) throws Exception;

    /**
     * 根据父id查询枚举对象信息列表
     *
     * @param parentId
     * @return
     */
    List<ApiFacadeObjEnumBo> queryListByParentId(Long parentId);

    /**
     * 根据枚举编码和枚举名称查询枚举信息
     *
     * @param enumCode
     * @param enumName
     * @param enumPackage
     * @return
     */
    ApiFacadeObjEnumBo queryEnumByCodeAndName(String enumCode, String enumName, String enumPackage);

    /**
     * 根据父id删除枚举信息
     *
     * @param parentId
     * @return
     */
    boolean deleteByParentId(Long parentId) throws Exception;
}
